Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

632
Visualizações
Url de auditoría abierta para esquemas permitidos. Permitir el uso de "archivo:" o esquemas personalizados a menudo es inesperado

Estoy usando esta declaración en Python

 jsonreq = json.dumps({'jsonrpc': '2.0', 'id': 'qwer', 'method': 'aria2.pauseAll'}) jsonreq = jsonreq.encode('ascii') c = urllib.request.urlopen('http://localhost:6800/jsonrpc', jsonreq)

En esto, recibo esta advertencia/error cuando realizo una prueba de calidad del código

Url de auditoría abierta para esquemas permitidos. Permitir el uso de "archivo:" o esquemas personalizados a menudo es inesperado.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Debido a que me topé con esta pregunta y la respuesta aceptada no funcionó para mí, investigué esto yo mismo:

Por qué urlib es un riesgo de seguridad

urlib no solo abre las URL http:// o https://, sino también ftp:// y file://. Con esto, podría ser posible abrir archivos locales en la máquina ejecutora, lo que podría ser un riesgo de seguridad si un usuario externo puede manipular la URL para abrir.

Cómo arreglar esto

Usted mismo es responsable de validar la URL antes de abrirla con urllib. P.ej

 if url.lower().startswith('http'): req = urllib.request.Request(url) else: raise ValueError from None with urllib.request.urlopen(req) as resp: [...]

Cómo solucionar esto para que el linter (por ejemplo, bandido ) ya no se queje

Al menos bandit tiene una lista negra simple para la llamada de función. Siempre que use urllib, el linter generará una advertencia. Incluso si SÍ valida su entrada como se muestra arriba. (O incluso usar URL codificadas).

Agregue un comentario #nosec a la línea para suprimir la advertencia de bandit o busque la palabra clave de supresión para su linter/code-checker. Es una buena práctica agregar también comentarios adicionales que indiquen POR QUÉ cree que no vale la pena una advertencia en su caso.

over 4 years ago · Santiago Trujillo Relatório

0

creo que esto es lo que necesitas

 import urllib.request req = urllib.request.Request('http://www.example.com') with urllib.request.urlopen(req) as response: the_page = response.read()
over 4 years ago · Santiago Trujillo Relatório

0

Para las personas que no pudieron resolverlo con las respuestas anteriores. En su lugar, podría usar la biblioteca de requests , que no está en la lista negra de Bandit.

https://bandit.readthedocs.io/en/latest/blacklists/blacklist_calls.html#b310-urllib-urlopen

 import requests url = 'http://www.example.com' the_page = requests.get(url) print(the_page.json()) # if the response is json print(the_page.text) # if the response is some text
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda